﻿function eliminarSeleccion(posicion, modulo) {
    infoModulo[modulo].limpiarSeleccionPanelControl(posicion);
    infoModulo[modulo].getActualizaFuncion()();
}

function esconderBotonSeleccion(posicion, modulo) {
    $("#seleccion" + posicion + "Modulo" + modulo).css({ display: 'none' });
}

function mostrarBotonSeleccion(posicion, modulo, texto) {
        var elemento = $("#seleccion" + posicion + "Modulo" + modulo);
        elemento.html(texto + ' <i class="icon-white icon-remove"></i>')
            .css({ display: 'inline-block' });
}

function actualizarInstitucionSeleccionada() {
    globalInstitucion = $('select[name=panelControlInstitucion] option:selected').val();
    globalInstitucionString = $('select[name=panelControlInstitucion] option:selected').text();
    $("#institucionSelected").text(" - " + globalInstitucionString);

}

function actualizarEvent() {
    cargandoModulosTodos();
    actualizarInstitucionSeleccionada();
    actualizarFecha();
}

function subirNivelTree() {
    tree.goUpAndDraw();
    objetoTree.subirNivel();
}

function cambiarChart(seleccion, modulo) {
    log("cambiarChart modulo:" + modulo + "|seleccion:" + seleccion);
    
    infoModulo[modulo].setTipoChart(seleccion);    
    infoModulo[modulo].getActualizaFuncion()();
}


function actualizarNombreHijo() {
    if (treeHijo != null) {
        $("#ubicacion").text(treeHijo);
    }
}
function actualizarFecha() {
    var texto = ""+usuarioFechaInicial ;
    $("#fecha").text(texto);
    actualizarInstitucionSeleccionada();
    infoModulo[1].getActualizaFuncion()();
}
function limpiarSelecciones() {
    for (var i = 3 ; i < infoModulo.length ; i++) {
        infoModulo[i].limpiarSeleccionesPanelControl();
    }
}

function reiniciarModulos() {
    objetoTree.iniciar();
    limpiarSelecciones();
}


function funcionMouseOver(hijo, padre, tamanho, color) {
    mostrarTexto("Selección :" + hijo,"divTreeOver");
}
function funcionMouseOut() {
    mostrarTexto("", "divTreeOver");
}

function actualizarNombreHijoTotal() {
    actualizarNombreHijo();
    for (var i = 2 ; i < infoModulo.length; i++) {
        log("hijo" + i);
        infoModulo[i].getActualizaFuncion()();
    }
}

function funcionBackHandler() {
    if (nivelHijo) {
        objetoTree.subir2Niveles();
        //console.log("NIVELHIJO SUBO2");
    }
    else {
        objetoTree.subirNivel();
    }
    nivelHijo = false;

    console.log("NIVEL ACTUAL TREE:" + objetoTree.getNivel());
}
function funcionSelectHandler(hijo, padre, cantidad) {
    if (parseInt(cantidad) != 0) {
        nivelHijo = true;
    }
    else {
        nivelHijo = false;
    }
    if (padre == null) {
        objetoTree.iniciar();
    }
    else if (padre != treePadre) {
        if (treePadre == hijo) {
            objetoTree.subirNivel();
        }
        else {
            objetoTree.bajarNivel();
        }
    }
    treeHijo = hijo;
    treePadre = padre;
    console.log("NIVEL ACTUAL TREE:" + objetoTree.getNivel());
}

function actualizarModulo1() {
    log("actualizarModulo1: fechaInicio:" + usuarioFechaInicial);
    console.log("FFF" + globalInstitucion);
    var indice = 1;
    var dataJson = {
        fechaInicial: usuarioFechaInicial, modulo: indice, tipoChart: infoModulo[indice].getTipoChart(),
        nivelTreeHijo: treeHijo, nivelTreePadre: treePadre, codHijo:codHijo,codPadre : codPadre,
        institucion: globalInstitucion, nivelTree: objetoTree.getNivel()
    };
    
    //mostrarCargando(infoModulo[indice].getDivChart());
    cargando(indice);
    //'PanelControl/getData'
    $.getJSON(url, dataJson, function (data) {
        // Create and draw the visualization.
        finCargando(indice);
        log("llego data del tree");
        if (data.error.length > 0) {
            mostrarError(indice, data.error, infoModulo[indice].getDivChart());
            mostrarTotal(-1, indice);
        }
        else {
            treeHijo = data.datos[data.datos.length - 1][0];
            treePadre = null;
            codHijo = data.datos[data.datos.length -1][4];
            codPadre = null;
            infoModulo[indice].setData(data.datos);
            var funciones = [actualizarNombreHijoTotal, funcionSelectHandler, funcionBackHandler, funcionMouseOver, funcionMouseOut];
            dibujarChart(transformarData(infoModulo[indice].getData()), infoModulo[indice].getDivChart(), funciones,
                        infoModulo[indice].getTipoChart(), infoModulo[indice].getColores());
        }
    });
}

function selectHandlerModulo2(dato1, dato2, dato3) {
    //alert("modulo 2 " + dato1 + "|" + dato2 + "|" + dato3);
    //omitiendo el modulo 2 que es el actual
    for (var i = 3; i < infoModulo.length ; i++) {
        infoModulo[i].setMotivoNoOperativo(dato3);
        infoModulo[i].getActualizaFuncion()();
    }
}

function actualizarModulo2() {
    log("actualizarModulo2: fechaInicio:" + usuarioFechaInicial);
    var indice = 2;
    var dataJson = {
        fechaInicial: usuarioFechaInicial, modulo: indice, tipoChart: infoModulo[indice].getTipoChart(), nivelTreeHijo: treeHijo, nivelTreePadre: treePadre,
        codHijo: codHijo, codPadre: codPadre,
        institucion: globalInstitucion, motivoNoOperativo: infoModulo[indice].getMotivoNoOperativo(), tiempoSinTx: infoModulo[indice].getTiempoSinTx(),
        nivelTree: objetoTree.getNivel()
    };
    //mostrarCargando(infoModulo[indice].getDivChart());
    cargando(indice);
    $.getJSON(url, dataJson, function (data) {
        finCargando(indice);
        log("llego data del modulo" + indice);
        if (data.error.length > 0) {
            mostrarError(indice, data.error, infoModulo[indice].getDivChart());
            mostrarTotal(-1, indice);
        }
        else {
            mostrarTotal(data.cantidadTotal, indice);
            infoModulo[indice].setData(data.datos);
            var evento = selectHandlerModulo2;
            if (infoModulo[indice].getTipoChart() == 4) {
                evento = null;
                activarScroll(infoModulo[indice].getDivChart());
            }
            else {
                desactivarScroll(infoModulo[indice].getDivChart());
            }
            dibujarChart(transformarData(infoModulo[indice].getData()), infoModulo[indice].getDivChart(),evento ,
                        infoModulo[indice].getTipoChart(), infoModulo[indice].getColores());
        }
    });
}

function selectHandlerModulo3(dato1, dato2, dato3) {

    for (var i = 2 ; i < infoModulo.length ; i++) {
        if (i != 3) {
            infoModulo[i].setTiempoSinTx(dato3);
            infoModulo[i].getActualizaFuncion()();
        }
    }
    //infoModulo[3].getActualizaFuncion()();
}

function actualizarModulo3() {
    log("actualizarModulo3: fechaInicio:" + usuarioFechaInicial );

    var indice = 3;
    var dataJson = {
        fechaInicial: usuarioFechaInicial, modulo: indice, tipoChart: infoModulo[indice].getTipoChart(), nivelTreeHijo: treeHijo, nivelTreePadre: treePadre,
        codHijo: codHijo, codPadre: codPadre,
        institucion: globalInstitucion, motivoNoOperativo: infoModulo[indice].getMotivoNoOperativo(), tiempoSinTx: infoModulo[indice].getTiempoSinTx(),
        nivelTree: objetoTree.getNivel()
    };
    //mostrarCargando(infoModulo[indice].getDivChart());
    cargando(indice);
    $.getJSON(url, dataJson, function (data) {
        finCargando(indice);
        log("llego data del modulo" + indice);
        if (data.error.length > 0) {
            mostrarError(indice, data.error, infoModulo[indice].getDivChart());
            mostrarTotal(-1, indice);
        }
        else {
            mostrarTotal(data.cantidadTotal, indice);
            infoModulo[indice].setData(data.datos);
            dibujarChart(transformarData(infoModulo[indice].getData()), infoModulo[indice].getDivChart(), selectHandlerModulo3,
                infoModulo[indice].getTipoChart(), infoModulo[indice].getColores());
        }
    });
}

function actualizarModulo4() {
    log("actualizarModulo4: fechaInicio:" + usuarioFechaInicial );
    var indice = 4;
    var dataJson = {
        fechaInicial: usuarioFechaInicial, modulo: indice, tipoChart: infoModulo[indice].getTipoChart(), nivelTreeHijo: treeHijo, nivelTreePadre: treePadre,
        codHijo: codHijo, codPadre: codPadre,
        institucion: globalInstitucion, motivoNoOperativo: infoModulo[indice].getMotivoNoOperativo(), tiempoSinTx: infoModulo[indice].getTiempoSinTx(),
        nivelTree: objetoTree.getNivel()
    };
    //mostrarCargando(infoModulo[indice].getDivChart());
    cargando(indice);
    $.getJSON(url, dataJson, function (data) {
        finCargando(indice);
        log("llego data del modulo" + indice);
        if (data.error.length > 0) {
            mostrarError(indice, data.error, infoModulo[indice].getDivChart());
            mostrarTotal(-1, indice);
        }
        else {
            mostrarTotal(data.cantidadTotal, indice);
            infoModulo[indice].setData(data.datos);
            dibujarChart(transformarData(infoModulo[indice].getData()), infoModulo[indice].getDivChart(), null, infoModulo[indice].getTipoChart(),
                        infoModulo[indice].getColores());
        }
    });
}

function mostrarTotal(numeroTotalTx, indice) {
    /*var texto = "";

    if (numeroTotalTx != null && numeroTotalTx > 0) {
        texto = "Total : " + numeroTotalTx + " tx";
    }
    mostrarTexto(texto, "cantidadTotal" + indice);*/
}

function cargandoModulosTodos() {
    for (var i = 1; i <= 4 ; i++) {
        cargando(i);
    }
}

function inicializar() {
    console.log("inicializar Pc");
    
    cargandoModulosTodos();
    actualizarInstitucionSeleccionada();    
    
    objetoTree = new ObjetoTree(5, 1);
    tamAltoChart = '316px';
    nivelHijo = false;
    actualizarNombreHijo();
    actualizarFecha();
    
    inicializarArregloDibujarChart();
    $("#btnactualizar").click(actualizarEvent);
    var i = 2;
    $('#radioModulo' + i + '_' + infoModulo[i].getTipoChart()).prop('checked', true);
}